#
# Copyright (c) 2015 Martin Sustrik  All rights reserved.
# Copyright (c) 2013 Luca Barbato
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom
# the Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.

ACLOCAL_AMFLAGS = -I m4

################################################################################
#  mill library                                                                #
################################################################################

millincludedir = $(includedir)
millinclude_HEADERS = libmill.h

lib_LTLIBRARIES = libmill.la

libmill_la_SOURCES = \
    chan.h \
    chan.c \
    cr.h \
    cr.c \
    debug.h \
    debug.c \
    ip.h \
    ip.c \
    list.h \
    list.c \
    mfork.c \
    poller.h \
    poller.c \
    slist.h \
    slist.c \
    stack.h \
    stack.c \
    tcp.c \
    timer.h \
    timer.c \
    udp.c \
    unix.c \
    utils.h \
    poll.inc \
    epoll.inc \
    kqueue.inc \
    dns/dns.h \
    dns/dns.c \
    file.c \
    ssl.c

pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libmill.pc

libmill_la_LDFLAGS = -no-undefined -version-info @MILL_LIBTOOL_VERSION@

# Turn the source fortification in glibc off - otherwise it would panic
# because of the stack pointer black magic in 'go' macro.
libmill_la_CFLAGS = \
    -fvisibility=hidden\
    -DMILL_EXPORTS \
    -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

################################################################################
#  automated tests                                                             #
################################################################################

noinst_PROGRAMS =

check_PROGRAMS = \
    tests/example\
    tests/go\
    tests/cls\
    tests/chan\
    tests/choose\
    tests/sleep\
    tests/fdwait\
    tests/tcp\
    tests/udp\
    tests/unix\
    tests/signals\
    tests/overload\
    tests/ip\
    tests/file\
    tests/mfork1\
    tests/mfork2\
    tests/mfork3\
    tests/ssl

EXTRA_DIST = \
    tests/cert.pem \
    tests/key.pem

LDADD = libmill.la

TESTS = $(check_PROGRAMS)

################################################################################
#  performance tests                                                           #
################################################################################

noinst_PROGRAMS += \
    perf/go\
    perf/ctxswitch\
    perf/chan\
    perf/chs\
    perf/chr\
    perf/whispers\
    perf/c10k

################################################################################
#  tutorial                                                                    #
################################################################################

noinst_PROGRAMS += \
    tutorial/step1 \
    tutorial/step2 \
    tutorial/step3 \
    tutorial/step4 \
    tutorial/step5 \
    tutorial/step6 \
    tutorial/step7 \
    tutorial/step8

################################################################################
#  additional packaging-related stuff                                          #
################################################################################

#  Generate ChangeLog file from git.
#  Also, there's no git availabe when building from the source package and
#  thus no way to obtain package version. Therefore, package version is
#  saved into a file when building a source package.
dist-hook:
	@if test -d "$(srcdir)/.git"; \
	then \
		echo Creating ChangeLog; \
		cd "$(top_srcdir)"; \
		(echo '# Generated by Makefile. Do not edit.'; echo; \
		  ./missing --run git log --decorate ) > ChangeLog.tmp; \
		mv -f ChangeLog.tmp $(top_distdir)/ChangeLog; \
		rm -f ChangeLog.tmp; \
    else \
        cp -f ChangeLog $(top_distdir)/ChangeLog || \
        echo Failed to generate ChangeLog >&2; \
	fi; \
	$(srcdir)/package_version.sh > $(distdir)/.version

EXTRA_DIST += \
    ./abi_version.sh \
    ./package_version.sh \
    ./CMakeLists.txt

distclean-local:
	-rm -f config.h

